13. Set 和 Get 函数
Set 和 Get 函数声明
对象不能直接访问私有变量,但借助于 Set 和 Get 函数,你的对象可以访问私有变量。本课前面的 Gaussian 对象展示了具体实现方法。
以下是 set 和 get 函数的声明:
class Gaussian
{
    private:
        ...
    public:
        ...
        void setMu(float);
        void setSigma2(float);
        float getMu();
        float getSigma2();
     ....
};这里是函数定义:
void Gaussian::setMu (float average) {
    mu = average;
}
void Gaussian::setSigma2 (float sigma) {
    sigma2 = sigma;
}
float Gaussian::getMu () {
    return mu;
}
float Gaussian::getSigma2() {
    return sigma2;
}定义 set 或 get 函数的语法与其他类函数(除构造函数外)相同:
return datatype Classname::functionname() {
        code to define the function;
}实际上,get 和 set 函数是一种约定,而不是具有特殊语法的特殊函数。传统上,虽然没有明确要求,但我们将这些函数命名为 getVariablename() 和 setVariablename()。
你需要将 set 和 get 函数声明为公共的,这样对象就可以访问这些函数了。
矩阵类的 set 和 get 函数
          继续编写你的矩阵类代码。
          
          *使用 set 函数来修改 grid 变量。
          
          *所有三个私有变量(gird、rows、cols)都应该有函数。
         
Start Quiz:
matrix.h 参考答案
# include <vector>
class Matrix
{
    private:
        std::vector< std::vector<float> > grid;
        std::vector<int>::size_type rows;
        std::vector<int>::size_type cols;
    public:
        //构造函数
        Matrix ();
        Matrix (std::vector< std::vector<float> >);
        // set functions
        void setGrid(std::vector< std::vector<float> >);
        // get functions
        std::vector< std::vector<float> > getGrid();
        std::vector<int>::size_type getRows();
        std::vector<int>::size_type getCols();matrix.cpp 参考答案
# include "matrix.h"
Matrix::Matrix() {
    std::vector <std:: vector <float> > initial_grid (10, std::vector <float>(5, 0.5));
    grid = initial_grid;
    rows = initial_grid.size();
    cols = initial_grid[0].size();
}
Matrix::Matrix(std::vector <std:: vector <float> > initial_grid) {
    grid = initial_grid;
    rows = initial_grid.size();
    cols = initial_grid[0].size();
}
void Matrix::setGrid(std::vector< std::vector<float> > new_grid) {
    grid = new_grid;
    rows = new_grid.size();
    cols = new_grid[0].size();
}
std::vector< std::vector<float> > Matrix::getGrid() {
    return grid;
}
std::vector<int>::size_type Matrix::getRows() {
    return rows;
}
std::vector<int>::size_type Matrix::getCols() {
    return cols;
}